#ifndef HEADER_77AE1B9E2D580266
#define HEADER_77AE1B9E2D580266

/*****************************************************************************************
 * 　视频帧头
 *
 *  Created on:2015年5月18日13时40分10秒
 *****************************************************************************************/
#ifndef PTM_FRAME_H_
#define PTM_FRAME_H_
#include <stdint.h>



/***************************************************************/
#define RDFrameTag  *(U32*)"PTMF"  //帧头
#define PTMFrameTag  *(U32*)"PTMF"  //遗留旧帧头

#define IFrame      'I' //I帧
#define PFrame      'P' //p帧
#define AFrame      'A' //音频帧
#define JpgFrame    'J' //图片帧
#define GPSInfo     'G' //GPS信息

#pragma pack(push) // 将当前pack设置压栈保存
#pragma pack(1)    // 必须在结构体定义之前使用
typedef struct _RD_FRAME_
{
    uint32_t frameTag;    //帧头标记
	uint8_t  headLen;     //帧头长度
    uint8_t  frameType;	  //帧类型
    uint8_t  channel;     //通道
	uint8_t  frameRate;   //帧率
	uint32_t codec_type:4;  //编码类型 视频 （I /P帧有效） 0 h264 1 h265    音频（A） 0 G711 1 G726 2 AAC 
    uint32_t frameNo:28;     //帧编号

	uint32_t dataLen;		//数据区的长度   255 * 255 最在65535大小
	int64_t  pts:48;		//帧的时间 单位ms毫秒　主要作用是为了方便回放进行同步．
	int64_t  isHaveAudio:1; //是否附加音频数据
	int64_t  audioLen:8;    //音频的长度
	int64_t  enc_svc_speed : 7;  //视频编码跳P帧类型 2 4 
} RD_FRAME_H;

typedef struct _PADINFO_IFRM_
{
	uint32_t info_1;
	uint32_t info_2;
}PADINFO_IFRM;

typedef struct _PADINFO_PFRM_
{
	uint32_t info_1;
	uint32_t info_2;
}PADINFO_PFRM;

#define BASE_FRAME_HEAD_LEN sizeof(RD_FRAME_H)
#pragma pack(pop)
typedef struct _FIFO_BUF_INFO_
{
	uint8_t * buf;	     //缓冲地址
	uint8_t  jump_flag;	 //是否缓冲地址是否回绕1：表示已经出现地址不连续的情况　0：正常　
	int		 frmType;	 //帧类型
	uint32_t frame_size; //当前帧的数据长度
	uint32_t free_size;  //剩余可用空间　　　剩余可用的缓冲
	uint64_t last_frmTm; //最后一帧的时间　　最后一帧时间
	uint32_t frameNo;
}FIFO_BUF_INFO;
/***************************************************************/
#endif /* FS_FRAME_H_ */

#endif // header guard
